<?php
/**
 * Subpacote do objeto CRUD
 *
 * @author William Borba <webwilliams@gmail.com>
 * @version 0.2.1
 * @copyright opensource.
 * @license http://creativecommons.org/licenses/by/3.0/
 * @link http://code.google.com/p/comphp/
 * @category framework
 * @package CRUD
 * @subpackage ObjBancoFuncoes
 *
 *
 */
namespace bibliotecas\componentes\banco\abstracao
	{
		/**
		 * inclui namespaces da classe objBancoConexao e tabem
		 * da classe PDO onde e nativamente instanciada.
		 *
		 * @see objBancoConexao
		 *
		 */
		use PDO as PDO;
		use bibliotecas\componentes\banco\abstracao\objBancoConexao as objBancoConexao;
		/**
		 * classe abstrata que contem os metodos para os procedimentos junto ao banco de dados
		 * tambem herda metodos da classe de conexao objBancoConexao.
		 *
		 * @see objBancoConexao
		 * @abstract ObjBancoFuncoes
		 *
		 */
		abstract class ObjBancoFuncoes extends objBancoConexao
			{
				/**
				 * metodo que tria os metodos a serem acessados, passando os
				 * parametros para os mesmos dinamicamente.
				 *
				 * @access protected
				 * @param array $parDados
				 * @method array mtdBancoFuncoes($parDados)
				 * @return array $parDados['dados']
				 */
				protected function mtdBancoFuncoes($parDados)
					{
						if (empty($this->proErros))
							{
								if (empty($this->proBanco['parBdTipo']) || empty($this->proBanco['parBdServidor']))
									{
										$this->mtdErros(array('mtdBancoFuncoes' => array('campo vazio' => $this->proBanco)));
									}
								$parDados['mtd'] = 'mtdBancoFuncoes' . ucfirst($this->proBancoFuncoes);
								$parDados['dados'] = $this->$parDados['mtd']($parDados);
							}
						return $parDados['dados'];
					}
				/**
				 *
				 * Enter description here ...
				 * @param unknown_type $parDados
				 * @return string
				 */
				private function mtdBancoFuncoesSql($parDados)
					{
						$parDados['bfs1'] = $this->mtdBancoConexao();
						$parDados['bfs5'] = null;
						if (empty($this->proErros))
							{
								foreach ($parDados['parSql'] as $parDados['bfs2'] => $parDados['bfs3'])
									{
										if ($parDados['bfs3'] == 'exec')
											{
												$parDados['bfs5'][] = $parDados['bfs1']->exec($parDados['bfs2']);
											}
										else if ($parDados['bfs3'] == 'execute')
											{
												$parDados['bfs4'] = $parDados['bfs1']->prepare($parDados['bfs2']);
												$parDados['bfs4']->execute();
												$parDados['bfs5'][] = $parDados['bfs4']->fetchAll(PDO::FETCH_ASSOC);
											}
									}
							}
						unset($parDados['bfs1']);
						return $parDados['bfs5'];
					}
			}
	}

?>